package chapter15;

import java.lang.reflect.Array;

/**
 * Created by lzy
 * Date: 2018/5/11
 */
public class GenericArrayWithTypeToken<T> {
    private T[] array;

    @SuppressWarnings("unchecked")
    public GenericArrayWithTypeToken(Class<T> type, int sz) {
        // 相当于(Object[])Integer[]
        // 因为使用Array.newInstance()生成了一个Integer[]的数组
        array = (T[]) Array.newInstance(type,sz);
    }

    public void put(int index, T item){
        array[index] = item;
    }

    public T get(int index){
        return array[index];
    }

    public T[] rep(){
        return array;
    }

    public static void main(String[] args) {
        GenericArrayWithTypeToken<Integer> gai = new GenericArrayWithTypeToken<>(Integer.class,10);
        Integer[] ia = gai.rep();
        System.out.println(ia.toString());
    }
}
